[Chapter 36] 36.6 Pitfalls
Author: Bryan Costales & Eric Allman
Date: 1999-01-06T22:00:34Z

#

| Chapter 36 The Command Line |

## 36.6 Pitfalls

- Prior to V8 sendmail, if the list of recipients contained an address that began with any of the prescanned switches, sendmail would wrongly view that recipient as a switch during its prescan phase. For example, mail to `joe, bill, -Cool` caused sendmail to try to use a file named `ool` as its configuration file.

- Command-line switches must precede recipient addresses. Switches that are mixed in with recipient names are treated as recipient addresses.

- Most versions of sendmail (including IDA and some versions of BSD but excluding SunOS and V8) syslog(3) a warning if the frozen configuration file doesn't exist. This can be annoying at sites that intentionally choose not to use a frozen configuration file.

- Prior to V8 sendmail, unknown command-line switches were silently ignored. Therefore sending mail from a shell script could fail for reasons that were difficult to find. For example, specifying the preliminary hop count wrongly with `-j`, instead of correctly with `-h`, caused your presetting of the hop count to be silently ignored.

- Some old BSD and SunOS versions of sendmail set the default sender's full name from the environmental variable NAME even when running as a daemon or when processing the queue. This can lead to the superuser's full name occasionally showing up wrongly as a sender's full name. IDA and V8 sendmail clear the full name in `-bd` and `-q` modes but use different methods. To prevent this problem under other versions of sendmail, the env(1) program can be used to clean up the environment passed to sendmail:

  >     % env - /usr/lib/sendmail -bd -q1h

- V8 sendmail uses getopt(3) to parse its command-line arguments so that a switch and its argument may have whitespace between them without harm:

  >     -C configfile

  But for bizarre historical reasons the `-d` switch differs. There may never be space between the `-d` and its arguments:

  >     -d 0.4

  If there is space between them, the argument (here, `0.4`) is taken to be a recipient name.

36.5 sendmail's exit() Status |  | 36.7 Alphabetized Reference